package demo1;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: xiaotutu
 * Date: 2024-03-16
 * Time: 21:05
 */

//写一个泛型类，其中有个方法，然后求数组中的最大值
// 这就是泛型的上界
class Alg<T extends Comparable<T>> {
    public T findMax(T[] array) {
        T max = array[0];
        for (int i = 1; i < array.length; i++) {
            // 因为max是T类型, 引用类型不能通过大于 或 小于 比较大小
            // 要比较大小则要用到Comparable接口,实现compare To方法
            // 所以传的类型实参也一定是要实现了Comparable接口的
            /* if(max < array[i]) {
                max = array[i];
            }*/
            if(max.compareTo(array[i]) < 0) {
                max = array[i];
            }
        }
        return max;
    }
}

// 那么怎么使用静态的泛型方法呢?
class Alg2 {
    public static <T extends Comparable<T>>T findMax(T[] array) {
        T max = array[0];
        for (int i = 1; i < array.length; i++) {

            /* if(max < array[i]) {
                max = array[i];
            }*/
            if(max.compareTo(array[i]) < 0) {
                max = array[i];
            }
        }
        return max;
    }
}
public class Test2 {
    public static void main(String[] args) {
        Integer[] array = {1,43,23,53,56};
        System.out.println(Alg2.findMax(array));
    }

    public static void main1(String[] args) {
        Alg<Integer> alg = new Alg();
        Integer[] array = {1,43,23,53,56};
        // <Integer> 可加可不加
        //Integer max = alg.findMax(array);
        Integer max = alg.<Integer>findMax(array);
        System.out.println(max);
    }
}
